home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / CRESC / Variations / symbol-demix < prev    next >
Text File  |  1997-02-02  |  2KB  |  36 lines

  1. symbol-demix pass/range-value symbol-pattern &optional :sort
  2.  
  3. Use this function to separate chords found in symbol-patterns.
  4.  
  5. (symbol-demix 4 '(fadg ebh jafi ldbe) :sort)
  6. --> (g = j l)
  7.  
  8. (symbol-demix 4 '(fadg ebh jafi ldbe))
  9. --> (g = i e)
  10.  
  11. Two different approaches are possible: 
  12.  
  13. - to reverse the effect of symbol-mix, thus demixing a number of symbol-patterns previously mixed together in sequence, - to extract symbol-patterns by symbol priority, thus demixing from low to high ranges of symbols.
  14.  
  15. The first approach looks at a symbol aggregate as an exploded list and selects individual symbols according to their position in that exploded list. Thus, '(abcd efgh ijkl) at pass-value 1 would produce '(a e i), at pass-value 4 '(d h l).
  16.  
  17. In a symbol-pattern that has unequal symbol aggregates the rest symbol = is substituted. 
  18.  
  19. (symbol-demix 4 '(abcd efg hijk lmn))
  20. --> (d = k =)
  21.  
  22. The second approach again explodes each symbol aggregate but sorts by symbol range rather than position. Thus, '(bfgc dhka ideb) at pass-value 1 would produce '(b a b), at pass-value 4  '(g k i).
  23.  
  24. (symbol-demix 4 '(kabf jdg hkcd ldge) :sort)
  25. --> (k = k l)
  26.  
  27. The symbol-demix functions works particularly well with gen-variants-chord where chords are derived from a symbol melody. Here is an example:
  28.  
  29. (def-symbol
  30.    harps (gen-variants-chordt 0.34 32 4 7 '(a -b c d))
  31.    flute (separate-chords 4 (symbol-of 'harps) :sort)
  32.    viola (separate-chords 2 (symbol-of 'harps) :sort)
  33.    cello (separate-chords 1 (symbol-of 'harps) :sort)
  34. )
  35.  
  36.